package com.accp.dao.impl;

import com.accp.dao.EmpDao;
import com.accp.pojo.Emp;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import java.util.List;

public class EmpDaoImpl extends BaseDaoImpl implements EmpDao {

    /**
     * 多条件分页查询员工信息
     * @param className
     * @param pageNo
     * @param pageSize
     * @param emp
     * @return
     */
    @Override
    public List<Emp> fandAll(String className, int pageNo, int pageSize, Emp emp) {
        String hql = "from "+className; //查询所有医生
        if(emp.getName()!=null&&emp.getName()!=""){
            hql = "from "+className+" where name like '%"+emp.getName()+"%'"; //根据条件查询所有医生
        }
        Query query = this.getSession().createQuery(hql);
        query.setFirstResult((pageNo - 1) * pageSize);//每页显示的第一条记录
        query.setMaxResults(pageSize);//每页显示的记录数
        return query.list();
    }

    /**
     * 分页查看，获取总记录数。
     * @param className
     * @return
     */
    public int totalPage(String className,String name){
        String hql = "select count(*) from "+className;
        if(name!=null&&name!=""){
            hql = "select count(*) from "+className+" where name like '%"+name+"%'"; //根据条件查询所有医生
        }
        Query query = this.getSession().createQuery(hql);
        int total = Integer.parseInt(query.list().get(0).toString());
        return total;
    }
    /**
     * 删除
     * @param
     * @return
     */
    @Override
    public boolean deleteEmp(Integer id) {
        String hql = "DELETE  Emp where id = ?";
        int i =getSession().createQuery(hql).setInteger(0,id).executeUpdate();
        if (i>0) {
            return true;
        }else{
            return false;
        }
    }
    /**
     * 添加
     * @param
     * @return
     */
    @Override
    public boolean add(Emp emp) {
        boolean flag = false;
        try{
            getSession().save(emp);
            flag = true;
        }catch(HibernateException e){
            e.printStackTrace();
        }
        return flag;
    }
    /**
     * 根据id查询
     * @param id
     * @return
     */
    @Override
    public Emp fandEmpById(Integer id) {
        Emp emp = (Emp) getSession().get(Emp.class,new Integer(id));
        return emp;
    }
    /**
     * 修改
     * @param id
     * @return
     */
    @Override
    public boolean update(Emp emp) {
        boolean flag = false;
        try{
            getSession().update(emp);
            flag = true;
        }catch(HibernateException e){
            e.printStackTrace();
        }
        return flag;
    }
}
